package Song.Han.Demo01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
* java.util.Iterator接口：迭代器（对集合进行遍历）
* 常用两个方法：
*   boolean hasNext()如果仍有元素可以迭代，则返回true
*   E next()返回迭代的下一个元素
* Iterator接口获取实现类的方法比较特殊：
* Collection接口中的方法iterator()，这个方法返回一个迭代器实现类对象
*
* 使用：
*   1.使用集合中的方法iterator()获取迭代器的实现类，使用Iterator接口接收（多态）
*   2.使用Iterator接口中的hasNext()判断还有没有下一个元素
*   3.使用Iterator接口中的next()取出集合中的下一个元素
* */
public class Demo01Iterator {
    public static void main(String[] args) {
        //创建集合对象
        Collection<String> coll = new ArrayList<>();
        //向集合中添加元素
        coll.add("张三");
        coll.add("李四");
        coll.add("王五");
        coll.add("赵六");
        coll.add("田七");

        //1.使用集合中的方法iterator()获取迭代器的实现类，使用Iterator接口接收（多态）
        Iterator<String> it = coll.iterator();
        //2.使用Iterator接口中的hasNext()判断还有没有下一个元素
        boolean b = it.hasNext();
        //3.使用Iterator接口中的next()取出集合中的下一个元素
        String s = it.next();
        System.out.println(s);
        //循环优化，在hasNext为false时跳出
        while (it.hasNext()){
            b = it.hasNext();
            s = it.next();//没有元素会有异常NoSuchElementException
            System.out.println(s);
        }


    }
}
